//package com.example.lcqexcel.ckp;
//
//import com.alibaba.excel.EasyExcel;
//import com.alibaba.excel.ExcelWriter;
//import com.alibaba.excel.util.DateUtils;
//import com.alibaba.excel.write.metadata.WriteSheet;
//import com.alibaba.excel.write.metadata.WriteTable;
//import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
//import com.alibaba.excel.write.metadata.style.WriteCellStyle;
//import com.alibaba.excel.write.metadata.style.WriteFont;
//import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
//import com.example.lcqexcel.dto.CkpExportProblemDto;
//import com.example.lcqexcel.dto.CkpInfoExportDto;
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.apache.poi.xssf.streaming.SXSSFWorkbook;
//import org.apache.poi.xssf.usermodel.*;
//import org.junit.Test;
//
//import java.awt.Color;
//import java.io.File;
//import java.text.ParseException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @ClassName CkpExportTest
// * @Description
// * @Author lichuanqi
// * @Date 2022/3/25 19:19
// * @Version 1.0
// **/
//public class CkpExportTest {
//
//   private CellStyle contentCellStyle;
//
//    @Test
//    public void test(){
//        String fileName = "E:/test/" + "tableWrite" + System.currentTimeMillis() + ".xlsx";
//        // 这里直接写多个table的案例了，如果只有一个 也可以直一行代码搞定，参照其他案例
//        // 这里 需要指定写用哪个class去写
//        ExcelWriter excelWriter = null;
//        try {
//            excelWriter = EasyExcel.write(fileName).build();
//
//            createSheet1(excelWriter);
//            createSheet2(excelWriter);
//
//        } finally {
//            // 千万别忘记finish 会帮忙关闭流
//            if (excelWriter != null) {
//                excelWriter.finish();
//            }
//        }
//    }
//
//    private void createSheet1(ExcelWriter excelWriter) {
//        // 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了
//        WriteSheet writeSheet = EasyExcel.writerSheet("质量必审清单")
//                .needHead(Boolean.TRUE).head(CkpInfoExportDto.class).build();
//        // 这里必须指定需要头，table 会继承sheet的配置，sheet配置了不需要，table 默认也是不需要
//        WriteTable writeTable0 = EasyExcel.writerTable(0).needHead(Boolean.FALSE).build();
//
//
//        excelWriter.write(data1(), writeSheet, writeTable0);
//        WriteSheetHolder writeSheetHolder = excelWriter.writeContext().writeSheetHolder();
//        SXSSFWorkbook workbook = (SXSSFWorkbook) excelWriter.writeContext().writeWorkbookHolder().getWorkbook();
//
//        Sheet sheet = writeSheetHolder.getSheet();
//        sheet.createRow(sheet.getLastRowNum()+1);
//        Row row1 = sheet.createRow(sheet.getLastRowNum()+1);
//
//        int rowNum1 = row1.getRowNum();
//        for (int i=0; i<=5; i++){
//            Cell cell = row1.createCell(i);
//            setCellStyle(workbook, cell);
//        }
//        Cell cell = row1.getCell(0);
//        cell.setCellValue("一");
//        Cell cell1 = row1.getCell(1);
//        cell1.setCellValue("总图规划");
//
//        CellRangeAddress cellAddresses1 = new CellRangeAddress(rowNum1, rowNum1, 1, 5);
//        sheet.addMergedRegion(cellAddresses1);
//
//        WriteTable writeTable1 = EasyExcel.writerTable(1).needHead(Boolean.FALSE).build();
//        // 第一次写入会创建头
//        excelWriter.write(dataNull(), writeSheet, writeTable1);
//
//        sheet.createRow(sheet.getLastRowNum()+1);
//        Row row = sheet.createRow(sheet.getLastRowNum()+1);
//        int rowNum = row.getRowNum();
//        CellRangeAddress cellAddresses = new CellRangeAddress(rowNum, rowNum, 1, 4);
//        sheet.addMergedRegion(cellAddresses);
//
//        // 第二次写如也会创建头，然后在第一次的后面写入数据
//        WriteTable writeTable2 = EasyExcel.writerTable(2).needHead(Boolean.FALSE).build();
//        excelWriter.write(data(), writeSheet, writeTable2);
//    }
//
//    private void createSheet2(ExcelWriter excelWriter) {
//        // 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了
//        WriteSheet writeSheet = EasyExcel.writerSheet("必审清单问题")
//                .needHead(Boolean.TRUE).head(CkpExportProblemDto.class).build();
//        excelWriter.write(problemData(),writeSheet);
//    }
//
//    private List<CkpExportProblemDto> problemData() {
//        List<CkpExportProblemDto> list = new ArrayList<>();
//        try {
//            for (int i = 0; i < 10; i++){
//                CkpExportProblemDto problemDto = new CkpExportProblemDto();
//                problemDto.setNum(i+1);
//                problemDto.setPrjName("孙河N-一期");
//                problemDto.setProblemStatus("待修改");
//                String imgPath = "E:/test/";
//                List<File> fileList = new ArrayList<>();
//                fileList.add(new File(imgPath+"test2.jpeg"));
//                fileList.add(new File(imgPath+"test3.jpeg"));
//                fileList.add(new File(imgPath+"test4.jpeg"));
//                problemDto.setImgList(fileList);
//                problemDto.setProblemSpec("建筑");
//                problemDto.setProblemType("图纸设计质量问题");
//                problemDto.setCkpContent("园区、首层大堂及地库归家动线均应保证无障碍通行归家动线应考虑就近原则，进入楼栋通道应遵循便捷、景观设计不可因效果需求影响归家便捷性。");
//                problemDto.setProblemDesc("最新版");
//                problemDto.setProblemChecker("宋韧");
//                problemDto.setProblemModifyParty("xujiadi");
//                problemDto.setProblemCreateTime(DateUtils.parseDate("2022-02-18 17:35:32", DateUtils.DATE_FORMAT_19));
//                problemDto.setProblemRequireFinishTime(DateUtils.parseDate("2022-02-18", DateUtils.DATE_FORMAT_10));
//                problemDto.setProblemSource("cad图纸");
//                problemDto.setProblemFileName("1号图纸.dwg");
//                problemDto.setProblemReply("谭文姣:恰恰");
//                list.add(problemDto);
//            }
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }
//        return list;
//    }
//
//    private void setCellStyle(SXSSFWorkbook workbook, Cell cell) {
//        XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
//        Font font = workbook.createFont();
//        XSSFColor xssfColor = new XSSFColor(new Color(155, 194, 230));
//        cellStyle.setFillForegroundColor(xssfColor);
//        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        font.setBold(true);
//        font.setFontName("Microsoft YaHei");
//        font.setColor(Font.COLOR_NORMAL);
//        font.setFontHeightInPoints((short)12);
//        cellStyle.setFont(font);
//        cellStyle.setAlignment(HorizontalAlignment.CENTER);
//        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//        cellStyle.setBorderBottom(BorderStyle.THIN);
//        cellStyle.setBorderLeft(BorderStyle.THIN);
//        cellStyle.setBorderRight(BorderStyle.THIN);
//        cellStyle.setBorderTop(BorderStyle.THIN);
//        cell.setCellStyle(cellStyle);
//    }
//
//    private CellStyle createContentCellStyle(SXSSFWorkbook workbook){
//        if (contentCellStyle != null){
//            return contentCellStyle;
//        }
//
//        XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
//        XSSFColor xssfColor = new XSSFColor(new Color(255, 242, 204));
//        cellStyle.setFillForegroundColor(xssfColor);
//        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        contentCellStyle = cellStyle;
//        return cellStyle;
//    }
//
//    private HorizontalCellStyleStrategy setStyle() {
//        // 头的策略
//        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//        // 背景设置为红色
//        headWriteCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
//        WriteFont headWriteFont = new WriteFont();
//        headWriteFont.setFontHeightInPoints((short)20);
//        headWriteCellStyle.setWriteFont(headWriteFont);
//        // 内容的策略
//        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
//        // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
//        contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
//
//        // 背景绿色
//        contentWriteCellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
//        WriteFont contentWriteFont = new WriteFont();
//        // 字体大小
//        contentWriteFont.setFontHeightInPoints((short)20);
//        contentWriteCellStyle.setWriteFont(contentWriteFont);
//        // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
//        return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
//    }
//
//
//
//    private List<CkpInfoExportDto> data(){
//        List<CkpInfoExportDto> resultList = new ArrayList<>();
//        for (int i = 0; i < 6; i++) {
//            CkpInfoExportDto exportDto = new CkpInfoExportDto();
//            exportDto.setNum(i);
//            exportDto.setContent("园区、首层大堂及地库归家动线均应保证无障碍通行归家动线应考虑就近原则，" +
//                    "进入楼栋通道应遵循便捷、景观设计不可因效果需求影响归家便捷性。");
//            exportDto.setSpec("总图、建筑");
//            exportDto.setSource("工单客诉、审图要点");
//            exportDto.setFormat("总图");
//            exportDto.setProblemNum(i*10);
//            resultList.add(exportDto);
//        }
//
//
//        return resultList;
//    }
//
//    private List<CkpInfoExportDto> dataNull(){
//        return null;
//    }
//
//    private List<CkpInfoExportDto> data1(){
//        List<CkpInfoExportDto> resultList = new ArrayList<>();
//
//        return resultList;
//    }
//
//    @Test
//    public void test1(){
//        for (int i = 1; i < 10; i++) {
//            System.out.println(NumberUtil.int2chineseNum(i));
//        }
//
//    }
//}
//
